<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 引入vue -->
  <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
  <!-- computed和watch之间的区别 -->
 <!--  
  1.computed能完成的功能，watch都能完成
  2.watch能完成的功能，computed不一定能完成 例：watch能进行一步操作
  原则：
  1.被VUE管理的函数，最好写成普通函数，这样this的执行才是vm / 组件实例对象
  2.所有不被vue所管理的函数（定时器的回调函数，ajax的回调函数），最好写成箭头函数 this指向才是 vm / 组件实例对象
 -->
  <div id="root">
    姓： <input type="text" v-model:value="firstName"><br />
    名： <input type="text" v-model="lastName"><br />
    测试： <input type="text" v-model="x"><br>
    姓名：<span>{{fullName}}</span>
  </div>
  <script type="text/javascript">
    Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。、
    const vm = new Vue({
      el: '#root',
      data: {
        firstName: '张',
        lastName: '三',
        fullName: '张-三'
      },
      watch: {
        firstName(val) {
          setTimeout(() => {
            this.fullName = val + '-' + this.lastName
          }, 1000)
        },
        lastName(val) {
          this.fullName = this.firstName + '-' + val
        }
      }
    })
  </script>
</body>

</html>